import numpy as np


### 六、ndarray的排序
# 排序只对一维数组有意义
# 例：对一个ndarray对象进行选择排序。
def select_sort(arr):
    for i in range(0, len(arr) - 1):
        # 从待排序的数组中选出最小的元素索引
        # 使用numpy
        # minIndex = np.argmin(arr[i + 1:]) + i + 1
        minIndex = np.argmin(arr[i:]) + i
        if arr[i] > arr[minIndex]:
            # 交换位置
            arr[i], arr[minIndex] = arr[minIndex], arr[i]
    return arr


n = np.array([6, 2, 1, 4, 3])
print(select_sort(n))
## 1、快速排序
# 默认快速排序kind='quicksort'
print(np.sort(n))  # np.sort()不改变输入n
n.sort()  # ndarray.sort()本地处理，不占空间，但修改原始数据n
print(n)
## 2、部分排序
n = np.random.randint(0, 100, size=100)
# 找到最大的5个，但并没有排序，并放在n的最后面
print(np.partition(n, kth=-5))
# 找到最小的5个，但并没有排序，并放在n的最前面
print(np.partition(n, kth=5))
